---
id: 64df45a3ad4f8719e5355244
title: Крок 46
challengeType: 20
dashedName: step-46
---

# --description--

Кроки для переміщення `n - 1` дисків можна розбивати до тих пір, поки не буде розглядатись лише один диск. Це буде перший хід. Після того, як відбувається перший хід, наступні ходи генеруються шляхом розгортання рекурсивних викликів. Майте на увазі, що на кожному рекурсивному кроці роль стрижнів змінюється між першим, цільовим та допоміжним.

Наразі кожен рекурсивний виклик друкує словник `rods` без внесення жодних змін до списків. Видаліть останній елемент зі списку `rods[source]` перед викликом `print()` і додайте його до списку `rods[target]`.

# --hints--

Видаліть останній елемент зі списку `rods[source]` та додайте його до списку `rods[target]` перед викликом `print`.

```js
({ test: () => assert.match(code, /move\(\s*n\s*-\s*1\s*,\s*source\s*,\s*auxiliary\s*,\s*target\s*\)\s+rods\s*\[\s*target\s*\]\s*\.append\(\s*rods\s*\[\s*source\s*\]\s*\.pop\(\s*\)\s*\)/) })
```

# --seed--

## --seed-contents--

```py
NUMBER_OF_DISKS = 4
rods = {
    'A': list(range(NUMBER_OF_DISKS, 0, -1)),
    'B': [],
    'C': []
}

--fcc-editable-region--
def move(n, source, auxiliary, target):
    if n > 0:
        # move n - 1 disks from source to auxiliary, so they are out of the way
        move(n - 1, source, auxiliary, target)

        # display starting configuration
        print(rods, '\n')

--fcc-editable-region--
# initiate call from source A to target C with auxiliary B
move(NUMBER_OF_DISKS, 'A', 'B', 'C')
```
